package com.dragon.modules.yuegou.entity.coupon;

import com.baomidou.mybatisplus.annotation.TableName;
import com.dragon.modules.yuegou.enums.OwnerType;
import com.dragon.modules.yuegou.enums.coupon.CouponPlatform;
import com.dragon.modules.yuegou.enums.coupon.CouponSourceType;
import com.dragon.modules.yuegou.enums.coupon.CouponType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 优惠券（会员的优惠券，不冗余优惠券模板信息，请使用1+N模式查询）实体类<br>
 * 对应的表为：coup_coupon<br>
 * 
 * @author pbuilder generated
 * @date 2020-07-17 20:19:55
 * @company sgy
 * @version 2.0
 */
@TableName("coup_coupon")
@ApiModel(description = "优惠券（会员的优惠券，不冗余优惠券模板信息，请使用1+N模式查询）")
public class CouponEntity {


    /** 优惠券ID */
	@ApiModelProperty("优惠券ID")
	protected String id;

    /** [全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT */
	@ApiModelProperty("[全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT")
	protected OwnerType ownerType;

    /** 集团ID */
	@ApiModelProperty("集团ID")
	protected String groupId;

    /** 商圈ID */
	@ApiModelProperty("商圈ID")
	protected String busdId;

    /** 商户ID */
	@ApiModelProperty("商户ID")
	protected String merchantId;

    /** 会员ID */
	@ApiModelProperty("会员ID")
	protected String memberId;

    /** 优惠券名称 */
	@ApiModelProperty("优惠券名称")
	protected String couponName;

    /** 优惠券模板ID */
	@ApiModelProperty("优惠券模板ID")
	protected String couponTemplateId;

    /** 优惠券随机段ID */
	@ApiModelProperty("优惠券随机段ID")
	protected String couponTemplateRandomId;

    /** 优惠金额 */
	@ApiModelProperty("优惠金额")
	protected BigDecimal reductionMount;

    /** [枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON */
	@ApiModelProperty("[枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON")
	protected CouponType type;

    /** 是否已使用（1：已使用、0：未使用） */
	@ApiModelProperty("是否已使用（1：已使用、0：未使用）")
	protected Boolean used;

    /** 使用时间 */
	@ApiModelProperty("使用时间")
	protected LocalDateTime useTime;

    /** 使用优惠金额 */
	@ApiModelProperty("使用优惠金额")
	protected BigDecimal useReductionMount;

    /** 有效时间 */
	@ApiModelProperty("有效时间")
	protected LocalDateTime validTime;

    /** 是否已失效（1：已失效、0：未失效） */
	@ApiModelProperty("是否已失效（1：已失效、0：未失效）")
	protected Boolean expired;

    /** 失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效） */
	@ApiModelProperty("失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效）")
	protected LocalDateTime expireTime;

    /** 创建时间 */
	@ApiModelProperty("创建时间")
	protected LocalDateTime createdTime;

    /** [枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER */
	@ApiModelProperty("[枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER")
	protected CouponPlatform platform;

    /** 自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等） */
	@ApiModelProperty("自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等）")
	protected String source;

    /** [枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET */
	@ApiModelProperty("[枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET")
	protected CouponSourceType sourceType;

    /** 券包ID（优惠券来自券包时存在） */
	@ApiModelProperty("券包ID（优惠券来自券包时存在）")
	protected String couponPackageId;

    /** 券包模板ID（冗余） */
	@ApiModelProperty("券包模板ID（冗余）")
	protected String couponPackageTemplateId;

    /** 【兑换订单号】订单号 积分兑换时填写 */
	@ApiModelProperty("【兑换订单号】订单号 积分兑换时填写")
	protected String orderNo;

    /** 【使用订单号】订单号 下单使用时填写 */
	@ApiModelProperty("【使用订单号】订单号 下单使用时填写")
	protected String useOrderNo;

	/**
	 * 构造一个空优惠券（会员的优惠券，不冗余优惠券模板信息，请使用1+N模式查询）实体对象
	 */
	public CouponEntity(){
		super();
	}

	/**
	 * 依据其它对象的信息构造一个优惠券（会员的优惠券，不冗余优惠券模板信息，请使用1+N模式查询）实体对象
	 * 
	 * @param other 其它对象
	 */
	public CouponEntity(CouponEntity other){
		super();
     	this.id = other.id;
     	this.ownerType = other.ownerType;
     	this.groupId = other.groupId;
     	this.busdId = other.busdId;
     	this.merchantId = other.merchantId;
     	this.memberId = other.memberId;
     	this.couponName = other.couponName;
     	this.couponTemplateId = other.couponTemplateId;
     	this.couponTemplateRandomId = other.couponTemplateRandomId;
     	this.reductionMount = other.reductionMount;
     	this.type = other.type;
     	this.used = other.used;
     	this.useTime = other.useTime;
     	this.useReductionMount = other.useReductionMount;
     	this.validTime = other.validTime;
     	this.expired = other.expired;
     	this.expireTime = other.expireTime;
     	this.createdTime = other.createdTime;
     	this.platform = other.platform;
     	this.source = other.source;
     	this.sourceType = other.sourceType;
     	this.couponPackageId = other.couponPackageId;
     	this.couponPackageTemplateId = other.couponPackageTemplateId;
     	this.orderNo = other.orderNo;
     	this.useOrderNo = other.useOrderNo;
	}


	/**
	 * 获取优惠券ID
	 * 
	 * @return id 优惠券ID
	 */
	public String getId() {
		return id;
	}
  	
	/**
	 * 设置优惠券ID
	 * 
	 * @param id 优惠券ID
	 */
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * 获取[全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT
	 * 
	 * @return ownerType [全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT
	 */
	public OwnerType getOwnerType() {
		return ownerType;
	}
  	
	/**
	 * 设置[全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT
	 * 
	 * @param ownerType [全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT
	 */
	public void setOwnerType(OwnerType ownerType) {
		this.ownerType = ownerType;
	}

	/**
	 * 获取集团ID
	 * 
	 * @return groupId 集团ID
	 */
	public String getGroupId() {
		return groupId;
	}
  	
	/**
	 * 设置集团ID
	 * 
	 * @param groupId 集团ID
	 */
	public void setGroupId(String groupId) {
		this.groupId = groupId;
	}

	/**
	 * 获取商圈ID
	 * 
	 * @return busdId 商圈ID
	 */
	public String getBusdId() {
		return busdId;
	}
  	
	/**
	 * 设置商圈ID
	 * 
	 * @param busdId 商圈ID
	 */
	public void setBusdId(String busdId) {
		this.busdId = busdId;
	}

	/**
	 * 获取商户ID
	 * 
	 * @return merchantId 商户ID
	 */
	public String getMerchantId() {
		return merchantId;
	}
  	
	/**
	 * 设置商户ID
	 * 
	 * @param merchantId 商户ID
	 */
	public void setMerchantId(String merchantId) {
		this.merchantId = merchantId;
	}

	/**
	 * 获取会员ID
	 * 
	 * @return memberId 会员ID
	 */
	public String getMemberId() {
		return memberId;
	}
  	
	/**
	 * 设置会员ID
	 * 
	 * @param memberId 会员ID
	 */
	public void setMemberId(String memberId) {
		this.memberId = memberId;
	}

	/**
	 * 获取优惠券名称
	 * 
	 * @return couponName 优惠券名称
	 */
	public String getCouponName() {
		return couponName;
	}
  	
	/**
	 * 设置优惠券名称
	 * 
	 * @param couponName 优惠券名称
	 */
	public void setCouponName(String couponName) {
		this.couponName = couponName;
	}

	/**
	 * 获取优惠券模板ID
	 * 
	 * @return couponTemplateId 优惠券模板ID
	 */
	public String getCouponTemplateId() {
		return couponTemplateId;
	}
  	
	/**
	 * 设置优惠券模板ID
	 * 
	 * @param couponTemplateId 优惠券模板ID
	 */
	public void setCouponTemplateId(String couponTemplateId) {
		this.couponTemplateId = couponTemplateId;
	}

	/**
	 * 获取优惠券随机段ID
	 * 
	 * @return couponTemplateRandomId 优惠券随机段ID
	 */
	public String getCouponTemplateRandomId() {
		return couponTemplateRandomId;
	}
  	
	/**
	 * 设置优惠券随机段ID
	 * 
	 * @param couponTemplateRandomId 优惠券随机段ID
	 */
	public void setCouponTemplateRandomId(String couponTemplateRandomId) {
		this.couponTemplateRandomId = couponTemplateRandomId;
	}

	/**
	 * 获取优惠金额
	 * 
	 * @return reductionMount 优惠金额
	 */
	public BigDecimal getReductionMount() {
		return reductionMount;
	}
  	
	/**
	 * 设置优惠金额
	 * 
	 * @param reductionMount 优惠金额
	 */
	public void setReductionMount(BigDecimal reductionMount) {
		this.reductionMount = reductionMount;
	}

	/**
	 * 获取[枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON
	 * 
	 * @return type [枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON
	 */
	public CouponType getType() {
		return type;
	}
  	
	/**
	 * 设置[枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON
	 * 
	 * @param type [枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON
	 */
	public void setType(CouponType type) {
		this.type = type;
	}

	/**
	 * 获取是否已使用（1：已使用、0：未使用）
	 * 
	 * @return used 是否已使用（1：已使用、0：未使用）
	 */
	public Boolean getUsed() {
		return used;
	}
  	
	/**
	 * 设置是否已使用（1：已使用、0：未使用）
	 * 
	 * @param used 是否已使用（1：已使用、0：未使用）
	 */
	public void setUsed(Boolean used) {
		this.used = used;
	}

	/**
	 * 获取使用时间
	 * 
	 * @return useTime 使用时间
	 */
	public LocalDateTime getUseTime() {
		return useTime;
	}
  	
	/**
	 * 设置使用时间
	 * 
	 * @param useTime 使用时间
	 */
	public void setUseTime(LocalDateTime useTime) {
		this.useTime = useTime;
	}

	/**
	 * 获取使用优惠金额
	 * 
	 * @return useReductionMount 使用优惠金额
	 */
	public BigDecimal getUseReductionMount() {
		return useReductionMount;
	}
  	
	/**
	 * 设置使用优惠金额
	 * 
	 * @param useReductionMount 使用优惠金额
	 */
	public void setUseReductionMount(BigDecimal useReductionMount) {
		this.useReductionMount = useReductionMount;
	}

	/**
	 * 获取有效时间
	 * 
	 * @return validTime 有效时间
	 */
	public LocalDateTime getValidTime() {
		return validTime;
	}
  	
	/**
	 * 设置有效时间
	 * 
	 * @param validTime 有效时间
	 */
	public void setValidTime(LocalDateTime validTime) {
		this.validTime = validTime;
	}

	/**
	 * 获取是否已失效（1：已失效、0：未失效）
	 * 
	 * @return expired 是否已失效（1：已失效、0：未失效）
	 */
	public Boolean getExpired() {
		return expired;
	}
  	
	/**
	 * 设置是否已失效（1：已失效、0：未失效）
	 * 
	 * @param expired 是否已失效（1：已失效、0：未失效）
	 */
	public void setExpired(Boolean expired) {
		this.expired = expired;
	}

	/**
	 * 获取失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效）
	 * 
	 * @return expireTime 失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效）
	 */
	public LocalDateTime getExpireTime() {
		return expireTime;
	}
  	
	/**
	 * 设置失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效）
	 * 
	 * @param expireTime 失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效）
	 */
	public void setExpireTime(LocalDateTime expireTime) {
		this.expireTime = expireTime;
	}

	/**
	 * 获取创建时间
	 * 
	 * @return createdTime 创建时间
	 */
	public LocalDateTime getCreatedTime() {
		return createdTime;
	}
  	
	/**
	 * 设置创建时间
	 * 
	 * @param createdTime 创建时间
	 */
	public void setCreatedTime(LocalDateTime createdTime) {
		this.createdTime = createdTime;
	}

	/**
	 * 获取[枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER
	 * 
	 * @return platform [枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER
	 */
	public CouponPlatform getPlatform() {
		return platform;
	}
  	
	/**
	 * 设置[枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER
	 * 
	 * @param platform [枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER
	 */
	public void setPlatform(CouponPlatform platform) {
		this.platform = platform;
	}

	/**
	 * 获取自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等）
	 * 
	 * @return source 自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等）
	 */
	public String getSource() {
		return source;
	}
  	
	/**
	 * 设置自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等）
	 * 
	 * @param source 自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等）
	 */
	public void setSource(String source) {
		this.source = source;
	}

	/**
	 * 获取[枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET
	 * 
	 * @return sourceType [枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET
	 */
	public CouponSourceType getSourceType() {
		return sourceType;
	}
  	
	/**
	 * 设置[枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET
	 * 
	 * @param sourceType [枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET
	 */
	public void setSourceType(CouponSourceType sourceType) {
		this.sourceType = sourceType;
	}

	/**
	 * 获取券包ID（优惠券来自券包时存在）
	 * 
	 * @return couponPackageId 券包ID（优惠券来自券包时存在）
	 */
	public String getCouponPackageId() {
		return couponPackageId;
	}
  	
	/**
	 * 设置券包ID（优惠券来自券包时存在）
	 * 
	 * @param couponPackageId 券包ID（优惠券来自券包时存在）
	 */
	public void setCouponPackageId(String couponPackageId) {
		this.couponPackageId = couponPackageId;
	}

	/**
	 * 获取券包模板ID（冗余）
	 * 
	 * @return couponPackageTemplateId 券包模板ID（冗余）
	 */
	public String getCouponPackageTemplateId() {
		return couponPackageTemplateId;
	}
  	
	/**
	 * 设置券包模板ID（冗余）
	 * 
	 * @param couponPackageTemplateId 券包模板ID（冗余）
	 */
	public void setCouponPackageTemplateId(String couponPackageTemplateId) {
		this.couponPackageTemplateId = couponPackageTemplateId;
	}

	/**
	 * 获取【兑换订单号】订单号 积分兑换时填写
	 * 
	 * @return orderNo 【兑换订单号】订单号 积分兑换时填写
	 */
	public String getOrderNo() {
		return orderNo;
	}
  	
	/**
	 * 设置【兑换订单号】订单号 积分兑换时填写
	 * 
	 * @param orderNo 【兑换订单号】订单号 积分兑换时填写
	 */
	public void setOrderNo(String orderNo) {
		this.orderNo = orderNo;
	}

	/**
	 * 获取【使用订单号】订单号 下单使用时填写
	 * 
	 * @return useOrderNo 【使用订单号】订单号 下单使用时填写
	 */
	public String getUseOrderNo() {
		return useOrderNo;
	}
  	
	/**
	 * 设置【使用订单号】订单号 下单使用时填写
	 * 
	 * @param useOrderNo 【使用订单号】订单号 下单使用时填写
	 */
	public void setUseOrderNo(String useOrderNo) {
		this.useOrderNo = useOrderNo;
	}

    public String toString() {
		return new StringBuilder().append("CouponEntity{").
			append("id=").append(id).
			append(",ownerType=").append(ownerType).
			append(",groupId=").append(groupId).
			append(",busdId=").append(busdId).
			append(",merchantId=").append(merchantId).
			append(",memberId=").append(memberId).
			append(",couponName=").append(couponName).
			append(",couponTemplateId=").append(couponTemplateId).
			append(",couponTemplateRandomId=").append(couponTemplateRandomId).
			append(",reductionMount=").append(reductionMount).
			append(",type=").append(type).
			append(",used=").append(used).
			append(",useTime=").append(useTime).
			append(",useReductionMount=").append(useReductionMount).
			append(",validTime=").append(validTime).
			append(",expired=").append(expired).
			append(",expireTime=").append(expireTime).
			append(",createdTime=").append(createdTime).
			append(",platform=").append(platform).
			append(",source=").append(source).
			append(",sourceType=").append(sourceType).
			append(",couponPackageId=").append(couponPackageId).
			append(",couponPackageTemplateId=").append(couponPackageTemplateId).
			append(",orderNo=").append(orderNo).
			append(",useOrderNo=").append(useOrderNo).
			append('}').toString();
    }

	/**
	 * 复制对象
	 * 
	 * @return 复制后的新实体对象
	 */
	public CouponEntity copy() {
		return new CouponEntity(this);
	}

    /** 优惠券ID */
	public static final String COL_ID = "id";

    /** [全局枚举]所有者类型(把优惠券交给会员之前的所有者)：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT */
	public static final String COL_OWNER_TYPE = "owner_type";

    /** 集团ID */
	public static final String COL_GROUP_ID = "group_id";

    /** 商圈ID */
	public static final String COL_BUSD_ID = "busd_id";

    /** 商户ID */
	public static final String COL_MERCHANT_ID = "merchant_id";

    /** 会员ID */
	public static final String COL_MEMBER_ID = "member_id";

    /** 优惠券名称 */
	public static final String COL_COUPON_NAME = "coupon_name";

    /** 优惠券模板ID */
	public static final String COL_COUPON_TEMPLATE_ID = "coupon_template_id";

    /** 优惠券随机段ID */
	public static final String COL_COUPON_TEMPLATE_RANDOM_ID = "coupon_template_random_id";

    /** 优惠金额 */
	public static final String COL_REDUCTION_MOUNT = "reduction_mount";

    /** [枚举]优惠券类型：0-停车券-PARK、1-优惠券-COUPON */
	public static final String COL_TYPE = "type";

    /** 是否已使用（1：已使用、0：未使用） */
	public static final String COL_USED = "used";

    /** 使用时间 */
	public static final String COL_USE_TIME = "use_time";

    /** 使用优惠金额 */
	public static final String COL_USE_REDUCTION_MOUNT = "use_reduction_mount";

    /** 有效时间 */
	public static final String COL_VALID_TIME = "valid_time";

    /** 是否已失效（1：已失效、0：未失效） */
	public static final String COL_EXPIRED = "expired";

    /** 失效时间（到期或标记为失效都算失效，标记为没失效并且没到期才算有效） */
	public static final String COL_EXPIRE_TIME = "expire_time";

    /** 创建时间 */
	public static final String COL_CREATED_TIME = "created_time";

    /** [枚举]来源平台：0-电脑-PC、1-苹果手机-IOS、2-安卓手机-ANDROID、3-微信-WECHAT、4-其它-OTHER */
	public static final String COL_PLATFORM = "platform";

    /** 自定义来源（例如：2018双节活动扫码、2018双节活动红包雨、2018年货节赠送、2019元宵节赠送等等） */
	public static final String COL_SOURCE = "source";

    /** [枚举]来源类型：0-商户发放-MERCHANT、1-积分兑换-POINT、2-福利赠送-WELFARE、3-领取-RECEIVE、4-聚合支付积分兑换-PAYGET */
	public static final String COL_SOURCE_TYPE = "source_type";

    /** 券包ID（优惠券来自券包时存在） */
	public static final String COL_COUPON_PACKAGE_ID = "coupon_package_id";

    /** 券包模板ID（冗余） */
	public static final String COL_COUPON_PACKAGE_TEMPLATE_ID = "coupon_package_template_id";

    /** 【兑换订单号】订单号 积分兑换时填写 */
	public static final String COL_ORDER_NO = "order_no";

    /** 【使用订单号】订单号 下单使用时填写 */
	public static final String COL_USE_ORDER_NO = "use_order_no";
}
